package com.yc.demo.online;

import java.util.HashSet;
import java.util.Set;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

@WebListener
public class OnlineListener implements 
		HttpSessionAttributeListener, ServletContextListener {
	
	private Set<String> loginedUserNames = new HashSet<>();

	 /**
     * 会话属性监听器方法
     */
    public void attributeAdded(HttpSessionBindingEvent event)  { 
         // 添加属性  event.getName 获取属性名
    	if("loginedUser".equals(event.getName())) {
    		// event.getValue 获取属性值 ==》 用户名
    		loginedUserNames.add((String)event.getValue());
    		
    	}
    }

    public void attributeRemoved(HttpSessionBindingEvent event)  { 
         // 删除属性
    	if("loginedUser".equals(event.getName())) {
    		// event.getValue 获取属性值 ==》 用户名
    		loginedUserNames.remove((String)event.getValue());
    	}
    }

    public void attributeReplaced(HttpSessionBindingEvent event)  { 
         // 替换属性
    }

    
    
    /**
     * ===============================================================
     * 应用上下文监听器方法
     */
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		// 服务器启动时执行初始化方法
		sce.getServletContext().setAttribute("loginedUserNames", loginedUserNames);
	}

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		// 服务器停止时执行销毁方法
		
	}
	
}
